TCP (Transmission Control Protocol) is a widely used protocol in the Internet and corresponds to a fourth layer (transport layer) in the OSI (Open System Interconnection) reference model. The TCP establishes a connection between terminals and provides a reliable and efficient communication. In order to achieve this, the TCP is provided with several functions. One of the TCP functions is a packet retransmission control function that a sender, if a packet is lost in a network, retransmits the lost packet to a receiver. More specifically, the packet retransmission control function of the TCP includes: (A) packet retransmission by Fast Retransmit; and (B) packet retransmission by timeout.
In the case of the TCP, a receiver, when receiving a packet in a correct order, notifies a sender of a sequence number of the next packet which should be subsequently received. That is, an “ACK (ACKnowledge) packet” which acknowledges a sequence number of the packet received in the correct order is sent back to the sender. Here, an ACK packet which acknowledges the same sequence number is hereinafter referred to as a “duplicate ACK packet”. In the case of the packet retransmission by the Fast Retransmit, as described in Non-Patent Literature 1, if the sender typically receives three duplicate ACK packets, the sender determines that it is highly possible that packets starting with the sequence number are lost, and retransmits the packets.
Also, the TCP retains a parameter called a Retransmission Timeout (RTO). As described in Non-Patent Literature 2, the RTO is calculated based on RTT (Round Trip Time). In the case of the packet retransmission by timeout, if a corresponding ACK packet is not sent back from the receiver within a time of the RTO after a packet is transmitted, the sender retransmits the corresponding packet.
Here, let us consider as an example a network in which the RTT is extremely short (about from several tens to several hundreds microseconds), such as that inside a data center. In such the network, if the RTO can be reduced to the order of microseconds, it is possible to shorten a period in which a new packet cannot be transferred because no ACK packet is sent back. This leads to improvement of communication efficiency.
However, since the TCP stack is in general implemented in an OS (Operating System) and the OS is implemented by software, it is not possible to set the RTO with high accuracy. For example, unit times (Jiffies) in Linux are 10 milliseconds, and therefore a standard TCP stack of the Linux cannot reduce the RTO to less than 10 milliseconds. Since the RTO of the TCP cannot be shortened to the order of microseconds, throughput of the TCP is deteriorated in a network such as in a data center.
As one of methods to solve the above problem, it has been proposed to perform the packet retransmission control also in a lower layer such as an MAC (Media Access Control) layer, as disclosed in Non-Patent Literature 3. More specifically, in the MAC layer which is lower than the TCP layer, the packet retransmission control is carried out by determining timeout in a microsecond level. As a result, the communication efficiency can be improved even in a network having a short RTT, without changing configurations of the OS nor the TCP stack. Note that a term “frame” instead of “packet” is in general used in a second layer such as the MAC layer, but both of them are used herein without being distinguished.
Patent Literature 1 discloses a packet data deleting method for avoiding collision of access to a buffer memory which retains transmission/reception packets including retransmission packets, in such a case where a wireless environment is assumed, a time required for data retransmission processing is measured in the MAC layer, and a packet exceeding the retransmission processing timeout is discarded to cancel retransmission of the packet.